/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pl.tewi.junit.annotations.processors;

import pl.tewi.annotations.processors.*;

/**
 * Klasa typu Singleton przetwarzająca adnotacje na klasach JUnit, patrz pakiet 
 * {@link pl.tewi.jeeunit.annotations}
 * @author Marcin Kwapisz
 */
public final class JUnitAnnotationProcessor extends AbstractAnnotationProcessor{

    private static final AnnotationProcessor ANNOTATION_PROCESSOR = new JUnitAnnotationProcessor();

    /**
     * Pobiera instancję komponentu przetwarzajacego adnotacje
     * @return instancja komponentu
     */
    public static AnnotationProcessor getInstance() {
        return ANNOTATION_PROCESSOR;
    }

    /**
     * Konstruktor na potrzeby przetwarzania adnotacji związanych z testami JUnit
     * Względem bazowej implementacji dodaje na pozycji 0 {@link RunWithAnnotationProcessor}
     */
    private JUnitAnnotationProcessor() {
        procesors.add(new RunWithAnnotationProcessor());
        procesors.add(new ApplicationServerAnnotationProcessor());
        procesors.add(new AppResourceAnnotationProcessor());
        procesors.add(new ApplicationsAnnotationProcessor());
    }

}
